//
// StoreNuke.Net -  http://www.storenuke.net
// Copyright (c) 2005
// by Robert J Collins ( info@storenuke.net ) of WillowTree Software, Inc. ( http://www.willowtreesoftware.com )
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated 
// documentation files (the "Software"), to deal in the Software without restriction, including without limitation 
// the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and 
// to permit persons to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or substantial portions 
// of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
// TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF 
// CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
// DEALINGS IN THE SOFTWARE.
//

using System;
using System.IO;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

namespace StoreNuke.StarterKit.Commerce.Admin.Skin
{
	/// <summary>
	///		Summary description for SkinUploader.
	/// </summary>
	public class SkinUploader : AdminControls
	{
		protected LinkButton btnShowAddSkin;
		protected Button btnUploadSkin;
		protected Label lblInstallInfo;
		protected LinkButton btnShowSkinEdit;
		protected Label lblSelectSkin;
		protected DropDownList ddlSkins;
		protected Image imgSkinPreview;
		protected LinkButton btnUpdateSkin;
		protected LinkButton btnCancel;
		protected Label lblSpacer1;
		protected Label lblSpacer3;
		protected Label lblSpacer2;
		protected Panel pnAddSkin;
		protected Panel pnEditSkin;
		protected LinkButton btnBackToStore;
		protected HtmlInputFile ulSkin;

		private void Page_Load(object sender, EventArgs e)
		{
			ControlTitle = "Skin Admin";
			if(! Page.IsPostBack)
			{
				GetSkinDirectories();
				ShowEditSkinPanel(true);
			}
		}

		private void GetSkinDirectories()
		{
			DirectoryInfo dir = new DirectoryInfo(Server.MapPath(".") + "\\skins");

			foreach(DirectoryInfo dirchild in dir.GetDirectories())
			{ 
				//Add Dir Name to Dropdown List
				if(dirchild.Name.IndexOf("_") == -1)
				ddlSkins.Items.Add(dirchild.Name);
			}

			GetSkinImage();
		}

		#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		///		Required method for Designer support - do not modify
		///		the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			this.btnShowAddSkin.Click += new EventHandler(this.btnShowAddSkin_Click);
			this.btnShowSkinEdit.Click += new EventHandler(this.btnShowSkinEdit_Click);
			this.btnBackToStore.Click += new EventHandler(this.btnBackToStore_Click);
			this.btnUploadSkin.Click += new EventHandler(this.btnUploadSkin_Click);
			this.ddlSkins.SelectedIndexChanged += new EventHandler(this.ddlSkins_SelectedIndexChanged);
			this.btnUpdateSkin.Click += new EventHandler(this.btnUpdateSkin_Click);
			this.btnCancel.Click += new EventHandler(this.btnCancel_Click);
			this.Load += new EventHandler(this.Page_Load);

		}
		#endregion

		private void btnShowAddSkin_Click(object sender, EventArgs e)
		{
			ShowEditSkinPanel(false);
		}

		private void btnShowSkinEdit_Click(object sender, EventArgs e)
		{
			ShowEditSkinPanel(true);
		}

		private void ShowEditSkinPanel(bool visible)
		{
			pnEditSkin.Visible = visible;
			pnAddSkin.Visible = ! visible;
		}

		private void btnBackToStore_Click(object sender, EventArgs e)
		{
			Response.Redirect("Default.aspx");
		}

		private void btnUploadSkin_Click(object sender, EventArgs e)
		{
			SkinUpload();
		}

		private void ddlSkins_SelectedIndexChanged(object sender, EventArgs e)
		{
			GetSkinImage();
		}

		private void GetSkinImage()
		{
			imgSkinPreview.ImageUrl = "../../skins/" + ddlSkins.SelectedValue + "/" + ddlSkins.SelectedValue + ".jpg";
		}

		private void btnUpdateSkin_Click(object sender, EventArgs e)
		{
			SkinDB skin = new SkinDB();
			skin.UpdateSkinPath("Skins/" + ddlSkins.SelectedValue + "/" + ddlSkins.SelectedValue + ".ascx");
		}

		private void btnCancel_Click(object sender, EventArgs e)
		{
			Response.Redirect("Default.aspx");
		}

		private void SkinUpload()
		{
			if((ulSkin.PostedFile != null ) && ( ulSkin.PostedFile.ContentLength > 0 ))
			{
				string fn = Path.GetFileName(ulSkin.PostedFile.FileName);
				fn = fn.Substring(0,fn.IndexOf("."));
				string dir = "\\Skins\\";
				lblInstallInfo.Text = Skins.UploadSkin(Server.MapPath("."),dir,fn,ulSkin.PostedFile.InputStream);

				ddlSkins.Items.Clear();
				GetSkinDirectories();
			}
		}
	}
}
